package leetcode_100;

import helpclass.ListNode;

/**
 *@author 周杨
 *AddTwoNumbers_2 两个数值以链表形式存储 问相加后的链表
 *describe:双指针遍历 AC 22%
 *2018年12月17日 上午10:43:58
 */
public class AddTwoNumbers_2 {
	 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		 boolean flag=(l1.val+l2.val)>=10;
		 ListNode head=new ListNode((l1.val+l2.val)%10);
		 ListNode run=head;
		 l1=l1.next;
		 l2=l2.next;
		 while(l1!=null&&l2!=null) {
			 int val=l1.val+l2.val+(flag?1:0);
			 ListNode now=new ListNode(val%10);
			 flag=val>=10;
			 l1=l1.next;
			 l2=l2.next;
			 run.next=now;
			 run=now;
		 }
		 while(l1!=null) {
			 int val=l1.val+(flag?1:0);
			 ListNode now=new ListNode(val%10);
			 flag=val>=10;
			 l1=l1.next;
			 run.next=now;
			 run=now;
		 }
		 while(l2!=null) {
			 int val=l2.val+(flag?1:0);
			 ListNode now=new ListNode(val%10);
			 flag=val>=10;
			 l2=l2.next;
			 run.next=now;
			 run=now;
		 }
		 if(flag) run.next=new ListNode(1);
		 return head;
		 
		 
	 }
}
